package qc.module.platform.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import qc.common.core.enums.QcMessageEnumClass;

import java.io.Serializable;
import java.util.Date;

/**
 * QcMessageInfo
 * 消息表
 *
 * @author QuCheng Tech
 * @create 2023/11/03
 */
@TableName("qc_message_info")
@Data
public class QcMessageInfo implements Serializable, Cloneable {

    /**
     * 消息ID
     */
    @TableId
    private String infoId;

    /**
     * 消息编码
     */
    private String msgCode;

    /**
     * 项目编码
     */
    private String projectCode;

    /**
     * 消息来源模块编码
     */
    private String moduleCode;

    /**
     * 消息来源模块名称
     */
    private String moduleName;

    /**
     * 创建时间
     */
    private Date inTm;

    /**
     * 信息标题；信息的标题文字
     */
    private String title;

    /**
     * 触发操作类型；可选：信息、成功、警告、错误
     */
    private QcMessageEnumClass.optTypeEnum optType;

    /**
     * 触发数据ID
     */
    private String dataId;

    /**
     * 消息体；包含不同通知方式的信息，包含接收地址和内容
     */
    private String body;

    /**
     * 过期时间
     */
    private Date expireTm;

    /**
     * 接收对象类型；分为：指定用户、指定接收组、所有用户
     */
    private QcMessageEnumClass.rcvTypeEnum rcvType;

    /**
     * 接收对象ID；根据接收对象类型不同为用户ID或接收组ID
     */
    private Integer rcvId;

    /**
     * 重要性；由配置定义该类型消息的重要性和优先级，重要性高的优先显示和推送
     */
    private QcMessageEnumClass.levelEnum level;

    /**
     * 通知方式
     */
    private QcMessageEnumClass.noticeTypeEnum noticeType;

    /**
     * 是否需要回执
     */
    private Boolean receipt;
}
